package com.mcxx.modules.minimumliving.service;

import com.alibaba.fastjson.JSONObject;
import com.mcxx.common.exception.BizException;
import com.mcxx.modules.miniSalvation.family.dto.*;
import com.mcxx.modules.miniSalvation.family.entity.MemberAssetsEntity;
import com.mcxx.modules.miniSalvation.order.entity.OrderEntity;
import com.mcxx.result.BaseResult;
import com.yinhai.ta404.core.security.vo.UserAccountVo;

import java.util.List;
import java.util.Map;


public interface SalvationApplyService {

    ApplyRtnDTO addSalvationRequest(MininumLivingApplyDTO applyDto, UserAccountVo accountVo) throws BizException;

    int modifyOrder(OrderEntity orderEntity) throws BizException;


    ApplyRtnDTO modifySalvationRequest(MininumLivingApplyDTO applyDto, UserAccountVo accountVo,String channel) throws BizException;


    ApplyRtnDTO houseHoldCancelSave(MininumLivingApplyDTO applyDto, UserAccountVo accountVo) throws BizException;


    ApplyRtnDTO tempSaveInHouse(MininumLivingApplyDTO applyDto, UserAccountVo accountVo,String channel) throws BizException;


    ApplyRtnDTO completeInHouse(MininumLivingApplyDTO applyDto, UserAccountVo accountVo,String channel);


    String modifyFamilyHolder(String familyId, String idcard, UserAccountVo accountVo);


    double saveMemberAssets(MemberAssetsEntity entity, UserAccountVo userAccountVo);


    double deleteMemberAssets(MemberAssetsEntity entity);


    List<String> verifyMemberAssetsList(Map<String, String> familyIdIdcardMap);


    void verifyMemberAssets(String orderId);


    List<String> verifyFamilyMasterNum(Map<String, String> familyIdIdcardMap);


    List<String> verifyCompleteMemberInfo(Map<String, String> familyIdIdcardMap);

    void verifyFamilyMasterNum(String familyId);

    void verifyCompleteMemberInfo(String familyId);

    void verifyCompleteMemberInfo(String familyId,String standType);

    void verifyExpireCheck(String orderId);

     String backupHtml(String orderId,String familyId,String businessCode);

     void verifyCert(String orderId, String familyId,String channel);


    public double saveMemberIncome(List<JSONObject> entity, String orderId, String familyId, UserAccountVo userAccountVo,MemberAssetsDTO memberAssetsDTO);



    Map<String, String> gainBankInfo(BankAbutmentDTO dto, UserAccountVo userAccountVo);



    void delete(FamilyMemberDTO dto, UserAccountVo accountVo);

    String addFamilyMember(FamilyMemberDTO dto,UserAccountVo accountVo);

    void  updateFamilyMember(FamilyMemberDTO dto,UserAccountVo accountVo);

     void changeMemberApply(String familyId, String orderId, Map<String,String> relationshipMap,UserAccountVo accountVo);

     int houseHoldSuspend(String orderId,String familyId);

     int suspend(String orderId,String familyId);

    void verifyfamilyRevenue(String familyId);


    BaseResult<MemberCardRtnDTO> checkCardIdExist(String idcard,String businessCode,UserAccountVo curUser);

    void verifyOrderNoReason(String orderId);
}
